package br.com.caelum.goodbuy.controladores;

import java.util.ArrayList;
import java.util.List;

import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.blank.persistencia.ProdutoDao;
import br.com.caelum.vraptor.validator.Validations;

@Resource
public class ProdutosController {

	//	private ProdutoDao dao;
	private Result result;
	private Validator validator;

	/*public ProdutosController(ProdutoDao dao, Result result, Validator validator) {
		this.dao = dao;	
		this.result = result;
		this.validator = validator;
	}*/

	public ProdutosController(Result result, Validator validator) {
		//		this.dao = dao;	
		this.result = result;
		this.validator = validator;
	}
	
	
	public List<Produto> lista(){
		List<Produto> listaProdutos = new ArrayList<Produto>();
		Produto p;
		for (int i = 0; i < 5; i++) {
			 p= new Produto();
			 p.setId(1L+i);
			 p.setNome("Produto " + (i+1));
			 p.setDescricao("Descricao do produto " + (i+1));
			 p.setPreco((double)i+10);
			 
			 listaProdutos.add(p);
		}
		
		return listaProdutos;
	}

	public void form()
	{

	}

	public void adiciona(final Produto produto)
	{
		validator.checking(new Validations(){{
			that(produto.getNome() != null && !produto.getNome().isEmpty(), "produto.nome", "nome.vazio");
			that(produto.getPreco() != null && produto.getPreco()>0, "produto.preco", "preco.invalido");
		}});
		validator.onErrorUsePageOf(ProdutosController.class).form();
		
		//		dao.adiciona(produto);
		result.redirectTo(ProdutosController.class).lista();
	}

}
